package main

import "fmt"

// 接口的实现
// 定义一个动物接口
type animal interface {
	move()
	eat(string)
}

type cat struct { //创建一个"猫"结构体
	name string
	feet int8
}
type chicken struct { //创建一个"🐔"结构体
	feet int8
}

func (c cat)move()  { //"猫"类型的"运动"方法
	fmt.Println("走猫步!")
}

func (c cat)eat(s string)  { //"猫"类型的"吃"方法
	fmt.Printf("猫吃%s",s)
}

func (c chicken)move()  { //"鸡"类型的"运动"方法

	fmt.Println("鸡冻")
}

func (c chicken)eat(s string)  {//"鸡"类型的"吃"方法
	fmt.Printf("吃%s",s)
}

func main()  {

	var a1 animal //定义一个接口类型的变量
	bc :=cat{name:"淘气",feet:4} //初始化"猫"结构体
	// 把"猫"结构体赋值给"a1"动物接口
	// 相当于猫方法"继承"了动物接口,则"猫","继承"了动物接口,必须实现动物接口定义的 "move","eat" 方法,否则会抛出异常
	a1 = bc
	a1.move()
	a1.eat("鱼")

	ch :=chicken{feet:2}
	a1 = ch
	a1.move()
	a1.eat("鸡饲料")



}
